//package com.kungfuhacking.wristbandpro.chat.presenter;
//
//import android.text.TextUtils;
//
//import com.kungfuhacking.wristbandpro.base.presenter.PhotoPresenter;
//import com.kungfuhacking.wristbandpro.chat.view.IChatView;
//import com.kungfuhacking.wristbandpro.database.DatabaseManager;
//import com.kungfuhacking.wristbandpro.mqtt.MqttConstant;
//import com.kungfuhacking.wristbandpro.mqtt.MqttManager;
//import com.kungfuhacking.wristbandpro.mqtt.bean.MessageBean;
//import com.kungfuhacking.wristbandpro.utils.CommonUtils;
//import com.kungfuhacking.wristbandpro.utils.Constant;
//
//import java.util.List;
//import java.util.concurrent.Executors;
//import java.util.concurrent.TimeUnit;
//
//import io.reactivex.Observable;
//import io.reactivex.ObservableEmitter;
//import io.reactivex.ObservableOnSubscribe;
//import io.reactivex.Observer;
//import io.reactivex.android.schedulers.AndroidSchedulers;
//import io.reactivex.disposables.Disposable;
//import io.reactivex.schedulers.Schedulers;
//
///**
// * Created by Aaron on 17/5/19.
// */
//
//public class IChatPresenter extends PhotoPresenter {
//
//    private IChatView iChatView;
//    private int startIndex = 0;
//    static final int CHOOSE_CODE = 0x212;
//    static final int TAKE_CODE = 0x213;
//    private MessageBean contact;
//
//    public void setContact(MessageBean contact) {
//        this.contact = contact;
//    }
//
//    public IChatPresenter(IChatView iChatView) {
//        this.iChatView = iChatView;
//    }
//
//    /**
//     * 查询聊天记录
//     *
//     */
//    public void chatHistory() {
//
//        if (contact == null)
//            return;
//
//        Observable.create(new ObservableOnSubscribe<List<MessageBean>>() {
//            @Override
//            public void subscribe(ObservableEmitter<List<MessageBean>> e) throws Exception {
//                e.onNext(DatabaseManager.getInstance().queryChatHistory(
//                        iChatView.getMyContext(),
//                        iChatView.getSp().getString(MqttConstant.USERID, ""),
//                        contact.channelId, startIndex));
//            }
//        }).subscribeOn(Schedulers.io())
//                .observeOn(AndroidSchedulers.mainThread())
//                .subscribe(new Observer<List<MessageBean>>() {
//                    @Override
//                    public void onSubscribe(Disposable d) {
//                        compositeDisposable.add(d);
//                    }
//
//                    @Override
//                    public void onNext(List<MessageBean> historyByTopic) {
//                        if (historyByTopic.size() > 0)
//                            iChatView.setChatInfo(historyByTopic, startIndex);
//                    }
//
//                    @Override
//                    public void onError(Throwable e) {
//
//                    }
//
//                    @Override
//                    public void onComplete() {
//
//                    }
//                });
//
//    }
//
//    public void moreHistory(int startIndex) {
//        this.startIndex = startIndex;
//        chatHistory();
//    }
//
//    /**
//     * 发送聊天消息
//     * @return
//     */
//    public boolean sendChatMessage() {
//
//        if (TextUtils.isEmpty(iChatView.getSendMessage().trim())) {
//            iChatView.showErr("不能发送空白消息");
//            iChatView.setSendTxt("");
//            return true;
//        }
//
//        if (contact == null) {
//            iChatView.showErr("好友信息异常");
//            return true;
//        }
//
//        if (!CommonUtils.isFriendOrGroupNum(iChatView.getSp(), iChatView.getMyContext(), contact.channelId))//和对方不是好友,或者不是群成员,无法发送消息
//            return true;
//
//        //获取到发送的mb
//        MessageBean mb = getSendMessageBean(MqttConstant.MQTTMESSAGETEXT, iChatView.getSendMessage(), 0);
//
//        try {
//            sendMsg(mb);//发送聊天消息
//        } catch (Exception e) {
//            e.printStackTrace();
//
//            if (MqttConstant.MQTTNOTCONNECT.equals(e.getMessage()))
//                iChatView.showErr("聊天服务器未连接");
//             else
//                iChatView.showErr("发送失败");
//            return true;
//        }
//
//        iChatView.addChatItem(mb);
//        iChatView.setSendTxt("");//输入框设为空
//
//        return true;
//    }
//
//
//    /**
//     * 获取mb
//     *
//     * @return mb (adapter里面的mb)
//     */
//    private MessageBean getSendMessageBean(String messageStyele, String content, double voiceLength) {
//
//        MessageBean mb = new MessageBean();
////        mb.chatType = currentChatType;//聊天类型 单聊 还是私聊
//
//        mb.channelId = contact.channelId;//聊天的topic
//        mb.receiveName = contact.receiveName;//聊天的名称, 单聊就为聊天对象的昵称, 群聊为群聊昵称
//        mb.receiveId = contact.receiveId;//聊天对象的id
//        mb.receivePic = contact.receivePic;//聊天对象的头像
//
//        mb.messageType = messageStyele;//消息类型
////        mb.content = bytes;//图片和音频的字节流
//        mb.content = content;//消息内容,文字为内容, 图片和音频为存储路径
//        mb.voiceLength = voiceLength;//录音时长
//
//        mb.sendId = iChatView.getSp().getString(MqttConstant.USERID, "");//发送者的id
//        mb.sendName = iChatView.getSp().getString(Constant.NICKNAME, "");//发送者的昵称
//        mb.sendPic = iChatView.getSp().getString(Constant.USER_IMG, "");//发送者的头像
//        mb.sendDate = System.currentTimeMillis();
//        return mb;
//    }
//
//    /**
//     * 发送聊天mb
//     *
//     * @param mb
//     */
//    private void sendMsg(final MessageBean mb) throws Exception {
//
//        if (mb.content.equals("1")) {
//
//            Runnable runnable = new Runnable() {
//                @Override
//                public void run() {
//                    try {
//                        mb.sendDate = mb.sendDate + 1;
//                        MqttManager.getInstance().setMessage(contact.channelId, mb);
//                    } catch (Exception e) {
//                        e.printStackTrace();
//                    }
//                }
//            };
//
//            Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(runnable, 0, 100, TimeUnit.MILLISECONDS);
//
//        } else
//            MqttManager.getInstance().setMessage(contact.channelId, mb);
//    }
//
//
//    @Override
//    public void clearRequest() {
//        compositeDisposable.clear();
//    }
//}
